using System;
using System.Data;
using System.Collections.Generic;

using ACFramework;

namespace ACSeguridad
{
	public class EPlantillas
	{
		#region Campos
      private String m_apli_codigo;
      private String m_empr_codigo;
      private String m_ptla_codigo;
      private Int32 m_ptla_key;
      private Int32 m_ptla_relative;
      private String m_ptla_text;
      private String m_ptla_activo;
      private String m_ptla_tipsec;
      private String m_ptla_usrcrea;
      private DateTime m_ptla_feccrea;
      private String m_ptla_usrmod;
      private DateTime m_ptla_fecmod;
      private Boolean m_nuevo;
      private Boolean m_modificado;
      private Boolean m_eliminado;

      public enum Estado
      {
         Activo
         ,NoActivo
         ,NoVisible
      }
		#endregion

		#region Constructores
		/// <summary>
		/// Inicializar una nueva instancia de la clase EPlantillas.
		/// </summary>
		public EPlantillas()
		{ }
		#endregion
   
      #region Propiedades

      /// <summary>
      /// Gets or sets el valor de: APLI_Codigo.
      /// </summary>
      public String APLI_Codigo
      {
         get { return m_apli_codigo; }
         set
         {
            if (m_apli_codigo != null)
            {
               if (m_apli_codigo != value)
               {
                  m_apli_codigo = value;
                  OnAPLI_CodigoChanged(m_apli_codigo, EventArgs.Empty);
               }
            }
            else
            {
               m_apli_codigo = value;
               OnAPLI_CodigoChanged(m_apli_codigo, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: EMPR_Codigo.
      /// </summary>
      public String EMPR_Codigo
      {
         get { return m_empr_codigo; }
         set
         {
            if (m_empr_codigo != null)
            {
               if (m_empr_codigo != value)
               {
                  m_empr_codigo = value;
                  OnEMPR_CodigoChanged(m_empr_codigo, EventArgs.Empty);
               }
            }
            else
            {
               m_empr_codigo = value;
               OnEMPR_CodigoChanged(m_empr_codigo, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_Codigo.
      /// </summary>
      public String PTLA_Codigo
      {
         get { return m_ptla_codigo; }
         set
         {
            if (m_ptla_codigo != null)
            {
               if (m_ptla_codigo != value)
               {
                  m_ptla_codigo = value;
                  OnPTLA_CodigoChanged(m_ptla_codigo, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_codigo = value;
               OnPTLA_CodigoChanged(m_ptla_codigo, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_Key.
      /// </summary>
      public Int32 PTLA_Key
      {
         get { return m_ptla_key; }
         set
         {
            if (m_ptla_key != null)
            {
               if (m_ptla_key != value)
               {
                  m_ptla_key = value;
                  OnPTLA_KeyChanged(m_ptla_key, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_key = value;
               OnPTLA_KeyChanged(m_ptla_key, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_Relative.
      /// </summary>
      public Int32 PTLA_Relative
      {
         get { return m_ptla_relative; }
         set
         {
            if (m_ptla_relative != null)
            {
               if (m_ptla_relative != value)
               {
                  m_ptla_relative = value;
                  OnPTLA_RelativeChanged(m_ptla_relative, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_relative = value;
               OnPTLA_RelativeChanged(m_ptla_relative, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_Text.
      /// </summary>
      public String PTLA_Text
      {
         get { return m_ptla_text; }
         set
         {
            if (m_ptla_text != null)
            {
               if (m_ptla_text != value)
               {
                  m_ptla_text = value;
                  OnPTLA_TextChanged(m_ptla_text, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_text = value;
               OnPTLA_TextChanged(m_ptla_text, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_Activo.
      /// </summary>
      public String PTLA_Activo
      {
         get { return m_ptla_activo; }
         set
         {
            if (m_ptla_activo != null)
            {
               if (m_ptla_activo != value)
               {
                  m_ptla_activo = value;
                  OnPTLA_ActivoChanged(m_ptla_activo, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_activo = value;
               OnPTLA_ActivoChanged(m_ptla_activo, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_TipSec.
      /// </summary>
      public String PTLA_TipSec
      {
         get { return m_ptla_tipsec; }
         set
         {
            if (m_ptla_tipsec != null)
            {
               if (m_ptla_tipsec != value)
               {
                  m_ptla_tipsec = value;
                  OnPTLA_TipSecChanged(m_ptla_tipsec, EventArgs.Empty);
               }
            }
            else
            {
               m_ptla_tipsec = value;
               OnPTLA_TipSecChanged(m_ptla_tipsec, EventArgs.Empty);
            }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_UsrCrea.
      /// </summary>
      public String PTLA_UsrCrea
      {
         get { return m_ptla_usrcrea; }
         set
         {
            if (m_ptla_usrcrea != value)
            { m_ptla_usrcrea = value; }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_FecCrea.
      /// </summary>
      public DateTime PTLA_FecCrea
      {
         get { return m_ptla_feccrea; }
         set
         {
            if (m_ptla_feccrea != value)
            { m_ptla_feccrea = value; }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_UsrMod.
      /// </summary>
      public String PTLA_UsrMod
      {
         get { return m_ptla_usrmod; }
         set
         {
            if (m_ptla_usrmod != value)
            { m_ptla_usrmod = value; }
         }
      }
      /// <summary>
      /// Gets or sets el valor de: PTLA_FecMod.
      /// </summary>
      public DateTime PTLA_FecMod
      {
         get { return m_ptla_fecmod; }
         set
         {
            if (m_ptla_fecmod != value)
            { m_ptla_fecmod = value; }
         }
      }
      /// <summary>
      /// Gets Nuevo.
      /// </summary>
      public Boolean Nuevo
      {
         get { return m_nuevo; }
      }
      /// <summary>
      /// Gets Modificado.
      /// </summary>
      public Boolean Modificado
      {
         get { return m_modificado; }
      }
      /// <summary>
      /// Gets Eliminado.
      /// </summary>
      public Boolean Eliminado
      {
         get { return m_eliminado; }
      }

      #endregion

      #region Eventos

      public event EventHandler APLI_CodigoChanged;
      public event EventHandler EMPR_CodigoChanged;
      public event EventHandler PTLA_CodigoChanged;
      public event EventHandler PTLA_KeyChanged;
      public event EventHandler PTLA_RelativeChanged;
      public event EventHandler PTLA_TextChanged;
      public event EventHandler PTLA_ActivoChanged;
      public event EventHandler PTLA_TipSecChanged;

      protected void OnAPLI_CodigoChanged(Object sender, EventArgs e)
      {
         if (APLI_CodigoChanged != null)
         {
            APLI_CodigoChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnEMPR_CodigoChanged(Object sender, EventArgs e)
      {
         if (EMPR_CodigoChanged != null)
         {
            EMPR_CodigoChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_CodigoChanged(Object sender, EventArgs e)
      {
         if (PTLA_CodigoChanged != null)
         {
            PTLA_CodigoChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_KeyChanged(Object sender, EventArgs e)
      {
         if (PTLA_KeyChanged != null)
         {
            PTLA_KeyChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_RelativeChanged(Object sender, EventArgs e)
      {
         if (PTLA_RelativeChanged != null)
         {
            PTLA_RelativeChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_TextChanged(Object sender, EventArgs e)
      {
         if (PTLA_TextChanged != null)
         {
            PTLA_TextChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_ActivoChanged(Object sender, EventArgs e)
      {
         if (PTLA_ActivoChanged != null)
         {
            PTLA_ActivoChanged(sender, e);
            ActualizarInstancia();
         }
      }
      protected void OnPTLA_TipSecChanged(Object sender, EventArgs e)
      {
         if (PTLA_TipSecChanged != null)
         {
            PTLA_TipSecChanged(sender, e);
            ActualizarInstancia();
         }
      }

      #endregion

      #region Metodos
		public enum Instancia
		{
			Consultar,
			Insertar,
			Modificar,
			Eliminar
		}
		public void Instanciar(Instancia x_instancia)
		{
			switch (x_instancia)
			{
				case Instancia.Consultar:
					this.m_nuevo = false;
					this.m_modificado = false;
					this.m_eliminado = false;
					break;
				case Instancia.Insertar:
					this.m_nuevo = true;
					this.m_modificado = false;
					this.m_eliminado = false;
					break;
				case Instancia.Modificar:
					this.m_nuevo = false;
					this.m_modificado = true;
					this.m_eliminado = false;
					break;
				case Instancia.Eliminar:
					this.m_nuevo = false;
					this.m_modificado = false;
					this.m_eliminado = true;
					break;
			}
		}

      public static string getEstado(Estado x_opcion)
      {
         string _rpta = "";
         try
         {
            switch (x_opcion)
            {
               case Estado.Activo:
                  return "A";
                  break;
               case Estado.NoActivo:
                  return "I";
                  break;
               case Estado.NoVisible:
                  return "V";
                  break;
               default:
                  break;
            }
         }
         catch (Exception ex)
         {
            throw ex;
         }
         return _rpta;
      }

      public void Instanciar(ACEInstancia x_instancia)
      {
         switch (x_instancia)
         {
            case ACEInstancia.Consulta:
               this.m_nuevo = false;
               this.m_modificado = false;
               this.m_eliminado = false;
               break;
            case ACEInstancia.Nuevo:
               this.m_nuevo = true;
               this.m_modificado = false;
               this.m_eliminado = false;
               break;
            case ACEInstancia.Modificado:
               this.m_nuevo = false;
               this.m_modificado = true;
               this.m_eliminado = false;
               break;
            case ACEInstancia.Eliminado:
               this.m_nuevo = false;
               this.m_modificado = false;
               this.m_eliminado = true;
               break;
         }
      }
      public void ActualizarInstancia()
      {
         if (!m_nuevo)
         {
            if (!m_eliminado)
            { Instanciar(ACEInstancia.Modificado); }
         }
      }
		#endregion

		#region Metodos Estaticos
		
		#endregion
	}
}
